<%--
  Created by IntelliJ IDEA.
  User: StudyDuck
  Date: 2024/3/31
  Time: 20:00
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>

     1 这是一个 web项目。这是这个web项目的首页。
      我们写的 web项目 其实 就是 网络应用层架构: bs架构    浏览器/服务器

     我们通过tomcat服务器部署我们的web项目，部署时 设置好web项目名并发布。
          项目名：
                   1，我们可以设置一个项目名如 hiweb ，发布后路径就是：
                          http://localhost:8080/hiweb
                          http://localhost:8080/hiweb/
                          http://localhost:8080/hiweb/index.jsp
                   这三个路径都是访问该hiweb项目的首页index.jsp。  因为web项目发布后，直接输入项目名就会得到默认首页。也可以手动输入index.jsp访问首页。

                   2. 我们可以设置一个项目名：空白项目名，那么发布后的路径就是：
                          ① http://localhost:8080/空白名，是看不见的    这里的端口号8080就是对应着tomcat服务器。
                          ②http://ip/空白名，是看不见的
                          ③http://域名/空白名，是看不见的
                    这三个也是直接可以访问到 这个空白名项目的首页。
                         为什么②③没有写端口号， 也能访问到tomcat服务器发布的空白名项目，
                         这是因为web服务器的反向代理： 就是 浏览器中输入网站，只要有ip 就能找到 对应的服务器 。然后服务器（计算机）里面的web服务器根据 对面是浏览器输入的内容。会自动找到自身对应的web服务器解析。
                         如： https：//www.baidu.com    这里就是只输入 百度web项目的服务器（计算机）的ip，就能找到 web服务器上部署的百度web项目（只不过项目名是空白名而已）

     2  访问web项目流程： 记住：我们通过浏览器访问 网站 就是 bs架构应用架构。
                         同时：我们访问某个互联网上的某个网站， 看到的是这个网站的首页，并不是光一个页面。这个网站就是一整个web项目。
       通过浏览器输入：      ip+协议+端口号 + web项目名
       如访问本机web项目：   （协议）http://（ip）localhost:（端口）8080/（项目名）javaEEgit/
       如访问百度web项目：   （协议）https://（ip，用域名也可以）www.baidu.com                  这里只有ip或者域名，没有端口号。有web项目名，只不过是项目名是空白名而已。 没有端口号通过web服务反向代理会有的。
       为什么设置空白项目名：
                如果一台计算机上只安装了web服务器 ，以及这个web服务器就只部署了一个项目。
                那么我将这个发布的项目名设置为空白的，那么别人通过浏览器访问我这个web项目，只用输入ip地址或者域名（发布项目的计算机ip）就能直接访问到我这个web项目。
                 为什么不要输入端口号和项目名： web服务器的反向代理会生产对应的端口号。而项目名是空白的，所以这样就可以直接访问。


     3 html协议：  客户端浏览器   和   发布web项目的  web服务器数据传输的格式的规范
        包括哪些：
             请求（请求行（请求的方式post或者get）  请求头  空白体  请求体（用post请求，请求的参数内容就在这里面。如果是get请求。这里无内容））
             响应（响应行  响应头  空白行  响应体（返回的数据））

             请求对象HttpServletRequest:  请求的内容都被tomcat封装到了HttpServletRequest对象中
             响应对象HttpServletResponse： 响应是服务端接受到请求后，进行设置完成后，返回给浏览器读取

     4 服务端程序： 就HttpServlet类
          理解： 因为 客户端 和 服务端 之间的请求和响应 全部被封装到了 HttpServlet类的  请求对象HttpServletRequest 与响应对象HttpServletResponse  中。
                 因此我们要使用 请求对象 和 响应对象 ，就必须是 HttpServlet类 。
                 所以在服务端，我们要创建出一个HttpServlet类（子类） 才能 使用 请求和响应对象。
                 我们通过继承自定义一个HttpServlet类 。继承 HttpServlet类  （要手动导入该类jar包），成为子类。
                 因为只有是 HttpServlet类 或者 是其 子类 才可以 使用请求和响应对象

     5 tomcat支持3个规范（jsp jdbc servlet） 所以我们将这3个jar都提前导入进来。
     6 web项目里面： java代码的位置。
             1 java代码写在src里面 。 java代码的jar包放在 web目录下的web-inf目录下的lib中。
               因为web项目最终会被部署到web服务器上面并发布出去。 最后 java代码的路径会在 web-inf目录下的 classes目录下，与jar的lib最终会是同级目录。这样才可以使用到jar。
             2 java代码里面的使用 路径定位 ，都必须需要转化成 web项目发布后的   真实路径。
               即：


  </body>
</html>
